1. Field of the Invention
This invention relates to improvements in electrical computers and digital processing systems of the type having associated mass data storage peripheral memory devices, and more particularly to improvements in error correction coding methods and systems for recording and accessing data in mass data storage peripheral memory devices.
2. Relevant Background
Widely popular computer systems typically employ one or more mass data storage devices, such as hard disk drives, CD-ROM drives, DVD drives, or the like. It should be understood that although references herein for convenience may be made to hard disk drives, a preferred environment in which the invention may be practiced, it is not intended to limit the invention thereto.
Hard disk drives commonly used today have a spinning magnetic medium on which data are written in concentric data tracks, in a well-known manner. Usually the systems in which such hard disk drives are employed use error correction coding (ECC) techniques for maintaining the integrity of the data that is recorded onto and read from the drives. The most commonly used ECC techniques add redundant bits to a block of data to enable the original data to be recovered from a contaminated block. The redundant bits are usually recorded as the data is originally recorded onto the disk drive media. Examples of error codes that may be employed include a widely known parity code, or an error value code that may be derived from a logical exclusive-or of the data bits of the block that is being recorded.
In typical mass data storage device systems, when user data is to be originally stored to the mass data storage device media, the host computer sends the user data to the mass data storage device. The control electronics and firmware of the device processes the user data on the mass data storage device and writes it to the recording media of the device. As the data is written, typically a hardware circuit is used to generate a correction code that is stored with each sector of data. The correction code is then available for subsequent use by the hardware correction circuit.
When the user data is subsequently read from the media of the mass data storage device, the control electronics and firmware of the mass data storage device processes the user data. Usually, both error detection and correction are accomplished as a part of this function. This is usually done by a specific hardware circuit, which is used to check each sector of data that is read from the mass data storage device.
Although some portion of the correction done on typical mass storage devices may also be performed by firmware on the mass data storage device, it will be appreciated that the circuit hardware may be fairly extensive and typically the error detection and correcting circuitry itself is relatively complex.
If an error is found, then another hardware circuit may be used to correct the data, using the correction code that was stored with the user data when it was written, directly in the disk drive memory. The corrected data is then transferred from the disk drive to the host for use. Using this type of ECC technique, therefore, all error correction procedures are handled within the hard disk drive, and the host computer never actually “knows” whether any error correction has occurred. Thus, the host computer only receives good data from the mass data storage device.
In addition, the hardware that is associated with a particular hard disk drive is committed to the particular ECC technique that has been adopted with the particular hard disk drive. Although a large number of the ECC algorithms exist, once a particular ECC algorithm has been associated with the disk drive the algorithm cannot be changed without great difficulty.
What is needed therefore is a method and apparatus for performing ECC processes on data that is written to and read from the data medium of a mass data storage device, that does not require significant hardware to be associated with the mass data storage device, and which is sufficiently flexible to enable different error correction techniques to be easily selected and employed.